package com.fengkai.filepost.pdfoutstream.test.ODsolutions;

/**
 * @author Fengkai
 * @creat 2023/4/22
 * 一个 DNA 序列由 A/C/G/T 四个字母的排列组合组成。 G 和 C 的比例（定义为 GC-Ratio ）是序列中 G 和 C 两个字母的总的出现次数除以总的字母数目（也就是序列长度）。在基因工程中，这个比例非常重要。因为高的 GC-Ratio 可能是基因的起始点。
 * 给定一个很长的 DNA 序列，以及限定的子串长度 N ，请帮助研究人员在给出的 DNA 序列中从左往右找出 GC-Ratio 最高且长度为 N 的第一个子串。DNA 序列为 ACGT 的子串有: ACG , CG , CGT 等等，但是没有 AGT ， CT 等等
 * 数据范围：字符串长度满足 1≤n≤1000 ，输入的字符串只包含 A/C/G/T 字母
 * 输入描述：
 * 输入一个 string 型基因序列，和 int 型子串的长度
 * 输出描述：
 * 找出 GC 比例最高的子串,如果有多个则输出第一个的子串
 */
public class DNAsort {

    public static void main(String[] args) {
        String input = "ACGT";
        int length = 3;
        solveMethod(input, length);
    }
    public static void solveMethod(String input, int length) {
        double max = 0.0;
        String res = "";
        for (int i = 0; i < input.length() - length + 1; ++i) {
            String str1 = input.substring(i, length + i);
            String str2 = str1.replaceAll("[^CG]", "");
            double x = str2.length() * 1.0 / str1.length();
            if (x > max) {
                res = str1;
                max = x;
                if (1.0 == x) {
                    break;
                }
            }
        }
        System.out.println(res);
    }
}
